package com.tj.collection.controller.chatquality.response;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;

@ApiModel(value = "chatterVO", description = "chatter信息类")
@Data
@Builder
public class ChatterVO implements Serializable {

    @ApiModelProperty("chatter内码，页面不予显示")
    private String chatterUserCode;
    @ApiModelProperty("chatter账号")
    private String chatterAccount;
    @ApiModelProperty("chatter名称")
    private String chatterNickName;
    @ApiModelProperty("chatter所在城市")
    private String city;
    @ApiModelProperty("chatter排班时间")
    private String workingHour;
    @ApiModelProperty("是否在线(显示当前在线情况): 1-在线 2-离线")
    private Integer online;
    @ApiModelProperty("是否在排班时间(显示当前是否处于排班状态): 0-否 1-是")
    private Integer inWorkingHour;
    @ApiModelProperty("排班时间内在线率")
    private String onlineRateInWorkingHour;
    @ApiModelProperty("排班时间内及时回复率")
    private String replyRateInWorkingHour;
    @ApiModelProperty("性别: 1-female 2-male")
    private Integer gender;
    @ApiModelProperty("工作类型: 1-Full 2-PartTime")
    private Integer jobType;

    @ApiModelProperty("在线用户数, 显示规则：当前时段在线用户数/总在线用户数")
    private OnlineUser onlineUser;
    @ApiModelProperty("活跃会话数")
    private Integer activeChasCnt;
    @ApiModelProperty("新建联数")
    private NewRelationCnt newRelation;
    @ApiModelProperty("用户给chatter发送的消息总数")
    private Integer userSendMsgCnt;
    @ApiModelProperty("chatter回复消息总数")
    private Integer replayCnt;
    @ApiModelProperty("破冰会话数")
    private BreakIceChat breakIceChatCnt;
    @ApiModelProperty("有效会话数")
    private Integer validChatCnt;
    @ApiModelProperty("深度会话数")
    private Integer deepChatCnt;
    @ApiModelProperty("合计卖出PP个数")
    private Integer totalPpCnt;
    @ApiModelProperty("合计卖出PV个数")
    private Integer totalPvCnt;
    @ApiModelProperty("合计卖出PPV个数")
    private TotalPPv totalPPvCnt;

    public OnlineUser getOnlineUser(Integer total, Integer stageNum, Integer warningFlag) {
        final OnlineUser onlineUser = new OnlineUser();
        onlineUser.setOnlineUserTotal(total);
        onlineUser.setOnlineUserCnt(stageNum);
        onlineUser.setShowWarningFlag(warningFlag);
        return onlineUser;
    }
    public NewRelationCnt getNewRelationCnt(Integer cnt, Integer warningFlag) {
        final NewRelationCnt newRelationCnt = new NewRelationCnt();
        newRelationCnt.setNewRelationCnt(cnt);
        newRelationCnt.setShowWarningFlag(warningFlag);
        return newRelationCnt;
    }
    public BreakIceChat getBreakIceChat(Integer cnt, Integer warningFlag) {
        final BreakIceChat breakIceChat = new BreakIceChat();
        breakIceChat.setBreakIceChatCnt(cnt);
        breakIceChat.setShowWarningFlag(warningFlag);
        return breakIceChat;
    }
    public TotalPPv getTotalPPv(Integer cnt, Integer warningFlag) {
        final TotalPPv totalPPv = new TotalPPv();
        totalPPv.setTotalPPvCnt(cnt);
        totalPPv.setShowWarningFlag(warningFlag);
        return totalPPv;
    }

    @ApiModel(value = "newRelationCnt", description = "新建联数")
    public class NewRelationCnt {
        @ApiModelProperty("新建联数异常显示标志：1-显示 0-不显示")
        private Integer showWarningFlag;
        @ApiModelProperty("新建联数")
        private Integer newRelationCnt;

        public Integer getShowWarningFlag() {
            return showWarningFlag;
        }

        public void setShowWarningFlag(Integer showWarningFlag) {
            this.showWarningFlag = showWarningFlag;
        }

        public Integer getNewRelationCnt() {
            return newRelationCnt;
        }

        public void setNewRelationCnt(Integer newRelationCnt) {
            this.newRelationCnt = newRelationCnt;
        }
    }

    @ApiModel(value = "onlineUser", description = "在线用户数")
    public class OnlineUser {
        @ApiModelProperty("当前时段在线用户数")
        private Integer onlineUserCnt;
        @ApiModelProperty("总在线用户数")
        private Integer onlineUserTotal;
        @ApiModelProperty("当前时段在线用户数异常显示标志：1-显示 0-不显示")
        private Integer showWarningFlag;

        public Integer getOnlineUserCnt() {
            return onlineUserCnt;
        }

        public void setOnlineUserCnt(Integer onlineUserCnt) {
            this.onlineUserCnt = onlineUserCnt;
        }

        public Integer getOnlineUserTotal() {
            return onlineUserTotal;
        }

        public void setOnlineUserTotal(Integer onlineUserTotal) {
            this.onlineUserTotal = onlineUserTotal;
        }

        public Integer getShowWarningFlag() {
            return showWarningFlag;
        }

        public void setShowWarningFlag(Integer showWarningFlag) {
            this.showWarningFlag = showWarningFlag;
        }
    }

    @ApiModel(value = "breakIceChat", description = "破冰会话数")
    public class BreakIceChat {
        @ApiModelProperty("破冰会话数")
        private Integer breakIceChatCnt;
        @ApiModelProperty("破冰会话数异常显示标志：1-显示 0-不显示")
        private Integer showWarningFlag;

        public Integer getBreakIceChatCnt() {
            return breakIceChatCnt;
        }

        public void setBreakIceChatCnt(Integer breakIceChatCnt) {
            this.breakIceChatCnt = breakIceChatCnt;
        }

        public Integer getShowWarningFlag() {
            return showWarningFlag;
        }

        public void setShowWarningFlag(Integer showWarningFlag) {
            this.showWarningFlag = showWarningFlag;
        }
    }

    @ApiModel(value = "totalPPv", description = "合计卖出PPV个数")
    public class TotalPPv {

        @ApiModelProperty("合计卖出PPV个数")
        private Integer totalPPvCnt;
        @ApiModelProperty("破冰会话数异常显示标志：1-显示 0-不显示")
        private Integer showWarningFlag;

        public Integer getTotalPPvCnt() {
            return totalPPvCnt;
        }

        public void setTotalPPvCnt(Integer totalPPvCnt) {
            this.totalPPvCnt = totalPPvCnt;
        }

        public Integer getShowWarningFlag() {
            return showWarningFlag;
        }

        public void setShowWarningFlag(Integer showWarningFlag) {
            this.showWarningFlag = showWarningFlag;
        }
    }
}
